Graph search is rapidly becoming ubiquitous within a variety of different contexts. The basis for graph searching are graphs, which are data structures that represent entities in terms of their connections to each other. The basic elements of a graph are nodes and edges. Nodes typically represent any kind of entity, such as a person or object, while edges represent the connections between them. A graph of a social network, for instance, may include nodes that represent all of the people in a group of people and edges that represent how they are connected to each other. Other fields in which graphs and graph analysis have proven very effective for organizing and searching information include transportation, biology, and economics.
In the social networking context, users can perform graph searches to discover other people that might share their interests or to discover particular things about people already in their network. Examples include searching a social graph for a list of friends that like a particular entity, such as a particular restaurant, for any photos taken by a particular person, or for any photos taken of a particular person. Such queries can be made even more powerful with the addition of Boolean operators. For instance, a graph query directed to a social graph may ask for any people who like both one entity and another, or for people who have visited a particular place and also like a particular entity.
In the foregoing examples, the type of objects that are the subject of a graph search are limited to the types specified in the query itself and are known prior to commencing the search. Thus, photos are the target of searches for photos of a particular person, friends are the target of a search for friends that like a particular entity, and so on.
In the context of enterprise search, such search tools may be less than optimal due to the wide variety of objects with which people interact. In just one limited example, a graph of a person's connections in an enterprise may represent a variety of object types, such as documents, presentations, emails, and invitations with which they may interact. In addition, they may interact with the objects in many different ways, such as by authoring, editing, and sharing documents, or sending, receiving and forwarding emails.